Systems and methods for reconciling playback using progress point information

ABSTRACT

The systems and methods are described herein for playback of content based on progress point information. The systems and methods detect nearby media devices to transmit or request progress point information. Based on the communicated progress point information, the system may generate an option to play back content at a point within the content up to which content was last consumed. When content providers offer different versions of one content item and the user does not select to play back content from the content provider associated with the progress point information, the system determines a proper playback point in other content providers.

CROSS-REFERENCE TO RELATED APPLICATION

This application is a continuation of U.S. patent application Ser. No.16/352,701, filed Mar. 13, 2019. The disclosure of which is herebyincorporated by reference herein in its entity.

BACKGROUND

The present disclosure is directed to generating playback of content atproper progress points, and more particularly, to communicating progresspoint information between media devices to synchronize progress pointinformation associated with different user profiles on the respectivemedia devices.

SUMMARY

Content today is accessed through a variety of devices and in varioussituations. In some situations, content is watched on a single device bymultiple users. For example, two users may start watching contenttogether using the first user's Netflix account. If the second userlater wishes to resume playback using his Netflix account when alone, hecannot because his account has not stored the playback point where theusers last watched together. In another situations, a user watches thesame content from multiple content providers at different times. Forexample, the user may watch a movie on Netflix, pause watching beforethe end of the movie, and resume watching the same content on Hululater. In conventional systems, content providers, unaware of theprogress that a user has made consuming the content from other providersor user profiles, will not play back content from a user's most recentprogress point. This can cost users time finding the correct point toresume playback of content, especially in view of the increasing numberof content providers and ways to consume content in a social or groupenvironment.

Systems and methods are described herein for playback of content basedon progress point information communicated between media devices. In oneembodiment, a media device generates an option to display content basedon progress point information that it requests from another media devicewithin its proximity. To source the progress point information, therequesting media device detects other media devices within a predefinedproximity (e.g., a predefined distance) as the media device. The systemgives options to the user to select a media device from which progresspoint information should be requested. In response to a user selectionof a desired media device, the user's media device transmits a requestfor progress point information to the desired media device. The requestcan include information such as the requesting device or the content forwhich progress point information is requested. After the request isapproved (e.g., authorized by the desired media device or through aservice provider), the system will provide the media device withprogress point information that can be used to resume playback of thecontent from the point to which it was last watched with the user of thedesired media device.

To detect other media devices within a proximity of a media device, thesystem may process Global Positioning System (GPS) data to correlate alocation with a time that a certain media device was at that location.The location of the media devices is determined using GPS data, and thesystem concludes the media devices are within proximity of each other bydetermining that the distance between the two devices at some timesatisfies a predefined distance threshold. As described more fullybelow, the system may employ other techniques for detecting proximatedevices including short-range wireless communication, image recognition,inaudible sound transmission, infrared light communication, etc.

In some embodiments, exchanging progress point information is donebetween media devices without user involvement. A media deviceperiodically broadcasts periodic requests for progress point informationto nearby media devices which receive these requests in the backgroundof their current operation (e.g., presenting content to users). Toprevent interrupting the users at the requested media devices, requestsare authorized in response to determining that the requesting mediadevice is a pre-authorized media device instead of in response to userinput. The system maintains a list of pre-authorized media devicesaccording to a history of devices that progress points have been sharedwith, a list that the user has composed manually, or a list of thecontacts stored in memory of the media device. Once the progress pointinformation has been shared, the requesting media device determineswhether to store the progress point information or not. In circumstanceswhere the progress point information is out-of-date, progress pointinformation will not be stored on the requesting device. The systemdetermines if the progress point information is outdated based on apredefined time threshold. This allows the system to maintain relevantprogress point information.

Users commonly possess more than one media device to consume content andmay decide to switch devices when consuming content with a group ofusers. When the progress point information associated with the contentis requested, users will not want to receive outdated progress pointinformation from a media device that was initially used but switchedaway from. Because the system tracks the time progress point informationwas generated for content, in some embodiments, progress pointinformation is determined to be outdated and therefore, not transmittedto or stored within requesting media devices.

In some embodiments, to resume playback at the appropriate times oncontent offered by different content providers, progress pointinformation must be reconciled among the different content providers.Because the same content may be offered by multiple content providers(e.g., Netflix and YouTube), the content provider used to resume playingcontent may be different from the one on which it was originallyconsumed. Under circumstances when the current content provider and theoriginal content provider offer different versions of the content (e.g.,scenes have been edited out), the system reconciles the playback timesfrom the different content providers based on segment identifiers (e.g.,a fingerprint for scenes within a movie) to determine the correct timeto begin playback of content from the current content provider.

It should be noted that the systems, methods, apparatuses, and/oraspects described above may be applied to, or used in accordance with,other systems, methods, apparatuses, and/or aspects described in thisdisclosure.

BRIEF DESCRIPTION OF THE DRAWINGS

The above and other objects and advantages of the disclosure will beapparent upon consideration of the following detailed description, takenin conjunction with the accompanying drawings, in which like referencecharacters refer to like parts throughout and in which:

FIG. 1 shows an illustrative progress point synchronization systemstoring a progress point, in accordance with some embodiments of thedisclosure;

FIG. 2 shows an illustrative user interface for presenting detecteddevices within proximity of a media device, in accordance with someembodiments of the disclosure;

FIG. 3 shows an illustrative user interface for searching previouslyconsumed content, in accordance with some embodiments of the disclosure;

FIG. 4 is a block diagram of an illustrative media device, in accordancewith some embodiments of the disclosure;

FIG. 5 is a block diagram of an illustrative progress pointsynchronization system, in accordance with some embodiments of thedisclosure;

FIG. 6 depicts an illustrative flowchart of a process for synchronizingprogress point information, in accordance with some embodiments of thedisclosure;

FIG. 7 depicts an illustrative flowchart of a process for sharingprogress point information, in accordance with some embodiments of thedisclosure; and

FIG. 8 depicts an illustrative flowchart of a process for reconcilingplayback progress between content sources, in accordance with someembodiments of the disclosure.

DETAILED DESCRIPTION OF THE DRAWINGS

Methods and systems are described herein for synchronizing progresspoint information (e.g., a data structure identifying content and atimestamp indicating progress of the user's consumption of that content)among users consuming content in a group.

FIG. 1 shows an illustrative progress point synchronization system 100storing a progress point, in accordance with some embodiments of thedisclosure. At timepoint A 102, media device 104 is generating contentfor display (e.g., a movie) associated with progress point information106. Media device 104 may be a smart television, a mobile device (e.g.,a tablet, smartphone, laptop), or any suitable electronic computingdevice capable of generating content for consumption. A progress pointmay refer to a timestamp indicating the consumption progress of thecontent. A media device on which the user is watching a movie at the45:00-minute mark may receive a request for progress point informationfrom another device that is within proximity. Progress point informationcommunication is not limited to instances when a user has requested theinformation (e.g., a “pull” for information). Rather, it may also bepushed to other users through a sharing feature. The system, in order toprocess the received request, may pause the playback of the movie inorder to prompt the user to authorize sharing progress point informationwith the other device. As described more fully here, in some embodimentsthe system may process the received request in the background of otheroperations without disturbing content playback).

At timepoint B 108, media device 104 may then share progress pointinformation 106 with media device 110. Progress point information 106may then be stored onto media device 110 or stored to a remote serverfor access by media device 110. The metadata fields stored onto mediadevice 110 may correspond to progress point information 112. Attimepoint C 114, the system may generate an option to display, on mediadevice 110, the previously viewed content on media device 104 beginningfrom the timestamp stored in progress point information 112.

As depicted in FIG. 1 , media device 104 is generating content. However,progress point synchronization is not limited to being implemented onmedia devices generating content. Progress points may also besynchronized for previously generated content. The content depicted insystem 100 is a movie, but it will be understood that “content” mayrefer to any suitable content with video, audio, or a combination ofvideo and audio. The movie generated by media device 104 is shown asbeing paused at a playback timestamp of 45:00, i.e., 45 minutes from thebeginning of the movie. The playback timestamp may be stored in ametadata field in progress point information 106, which may comprisemetadata fields such as “Device ID” field 106 a, “Content Provider ID”field 106 b, “Content Provider Account ID” field 106 c, “Content Title”field 106 d, “Playback Timestamp” field 106 e, and “Requesting DeviceID” field 106 f.

The “Device ID” field 106 a may be user-specified, automaticallypopulated by the system with a unique identification number, or acombination of the two. For example, a user associated with media device104 selected her “Device ID” to be “Katie_Tablet” and the systemregisters the user-selected value in addition to assigning a uniqueidentification number to avoid conflicts with other devices of the samename.

The “Content Provider ID” field 106 b is a unique ID assigned to acontent provider (e.g., by the Federal Communications Commission). Thecontent provider of the movie presented on media device 104 is Home BoxOffice (HBO), as indicated by the “Content Provider ID” field 106 bvalue “HBO.”

The “Content Provider Account ID” field 106 c is a unique ID assigned toeach user by the content provider that the respective user is subscribedto. Not all “Content Provider Account ID” fields will be populated.Depending on the content provider, the user may not have an accountassociated with the content provider. For example, broadcast televisionnetworks such as The American Broadcasting Company (ABC) provide theircontent without requiring a user to pay for a subscription account toaccess their content.

The title of the movie presented on media device 104 is “The Flash,”populated accordingly in “Content Title” field 106 d. Additionalmetadata fields in progress point information 106 may specify anepisode, series, or season number to further identify the content inaddition to its title (e.g., an episode of a television series may havea title, season number, and episode number).

Playback timestamps are recorded in the “Playback Timestamp” field 106e. The value in “Playback Timestamp” field 106 e may be populated with acurrent playback timestamp or with the most recent playback timestamp.For example, the current playback timestamp of the movie presented onmedia device 104 is depicted in FIG. 1 as 45:00 and is reflected in“Playback Timestamp” field 106 e. In instances where progress pointinformation is requested when the media devices are not actively orcurrently generating content (e.g., previously consumed content), thesystem may access stored progress point information. The most recentplayback timestamp may be stored in each set of progress pointinformation for previously consumed content. For example, if the user ofmedia device 104 wants to share progress point information 106 an hourafter the user has stopped watching “The Flash” at the 45:00-minutemark, the progress point information 106, with metadata fields 106 athrough 106 f populated as depicted in FIG. 1 , will be stored forsharing.

Progress point information 106 may be stored on local memory of mediadevice 104 or accessed at a remote server by media device 104. Portionsof the progress point information 106 may be provided by a contentprovider (e.g., the content provider ID, title of content, and thecontent provider account ID) and may be accessed by the media devicefrom a remote server hosted by the content provider.

At timepoint B 108, media device 110 is receiving progress pointinformation 106 after sending a request to media device 104 for theinformation. To make this request, the user of media device 110 may berequired, by system 100, to be within a predefined proximity of mediadevice 104. A proximity may involve a range of distance, audio strength(e.g., decibels), radio frequency (RF) signal strength (e.g.,signal-to-noise ratio), biometric identification (e.g., facialrecognition) or any suitable measurement of physical proximity to amedia device.

In some embodiments, the system may determine proximity based on usersinstead of based on location of media devices. For example, the systemuses biometric identification described above to identify that a user iswithin proximity of a media device that is generating content, determinethat the user is pre-authorized to access progress point information,and receive requests from the user's media device to store progresspoint information when the user returns to his own media device (e.g.,receive a request via a remote server when the media devices are notwithin range of each other). In some embodiments, the user is loggedinto a media device. The phrase “logged into a media device” may beunderstood to mean that an account (e.g., service provider account) hasbeen accessed on the media device. For example, logging into the serviceprovider account on a media device allows progress point information tobe established when the user consumes media.

In some embodiments, the system uses media devices to determineproximity. For example, media device 104 has RF communications circuitryto determine its current location based on Global Positioning System(GPS) signals. Media device 110 may use its RF communications circuitryto determine its current location to transmit to media device 104 whenrequesting progress point information 106. Media device 110 maydetermine that media device 104 is within a predefined distance (e.g., 5meters) of the current location of media device 110, and hence, withinthe predefined proximity.

In another example, media device 110 may use audio strength to determineif media device 104 is within a proximity to transmit a request toreceive progress point information 106. Media device 110 may detectaudio produced by media device 104 through an embedded microphone. Upondetermining the strength of the produced audio, measured in decibels,media device 110 may determine that media device 104 is within thepredefined proximity.

In another example, the system may use RF strength to determine whetheruser of media device 110 is within a predefined proximity of mediadevice 104. Media device 110 and media device 104 may engage in ahandshake to determine the signal strength of the two wireless pathsbetween the two RF communications circuitries (e.g., the wirelesschannel from media device 110 to media device 104 and vice versa). Mediadevice 104 may broadcast an initial RF signal to alert nearby devices totransmit an acknowledgment RF signal in return. Media device 104controls the transmit power of the initial RF signal such that onlydevices within a predefined distance receive the initial RF signalhaving the corresponding transmit power. Control of transmit powerallows the user to specify a customizable range within which to scan formedia devices, taking into consideration the appropriate powertransmission rules set by the FCC. For example, media device 110 allowsthe user options to scan for devices within five meters or 15 meters,depending on the transmit power used. Media device 110 may implement anelectronically scanned array or beamforming to direct its initial RFsignal to detect devices in a particular direction (e.g., only devicesthat are directly in front of the user). Media device 110 may detectmultiple media devices within a proximity and may provide the user anoption to select which of the media devices the request for progresspoint information should be sent to (e.g., send only to media device104).

In another example, the system may use biometric identification todetermine if the user of media device 110 is nearby media device 104. Acamera embedded in media device 104 may capture an image of the user.Biometric identification processes such as facial recognition, irisrecognition, or a combination of the two may be used to identify theuser. The user's identity may be associated with media device 110 or auser profile. The association may be applicable when media device 104responds to a request from media device 110 for progress pointinformation 106. The system may, therefore, use the biometricidentification to identify a profile of a user that is pre-authorized toreceive progress point information from the media device.

In response to the determination that media device 104 is within thepredefined proximity, media device 110 may transmit a request forprogress point information 106. The request may comprise informationidentifying the requesting device such as a Device ID.

After receiving the request from media device 110 for progress pointinformation 106, media device 104 may authorize the source of therequest (e.g., the user or the media device). Authorization may be donemanually (e.g., prompting the user to select whether content device 110is allowed to access progress point information 106) or automatically.Automatic authorization may be implemented with a list of pre-authorizedusers. For example, the system 100 automatically grants access toprogress point information 106 to users who are saved as contacts onmedia device 104. Media device 110, after being authorized, may receiveprogress point information 106 either directly from media device 104 orthrough a remote server. In some embodiments, authorization may occur ata remote server without interaction with media device 104. For example,the system provides a web interface on which a user might preauthorizeother users to access progress point information using identifyinginformation (e.g., email address, full name, phone number, user name,etc.).

Progress point information 106 may be stored as progress pointinformation 112 under the same or different metadata fields. The systemmay store progress point information 112 on local memory of media device110 or on a remote server. Progress point information 112 comprisesmetadata fields indicative of the information being received fromanother media device. While metadata fields like “Device ID” field 112a, “Content Provider ID” field 112 b, “Content Provider Account ID”field 112 c, “Content Title” field 112 d, and “Playback Timestamp” field112 e may contain similar information as their respective metadatafields sourced from progress point information 106, there may beadditional metadata fields populated in response to the completedrequest. For example, media device 110 stores the value for “SourceDevice ID” field 112 e with the “Device ID” field 106 a value (e.g.,“Source Device ID” is “Katie_Tablet”). There may be a metadata field ineach set of progress point information that indicates which users ormedia devices were within a proximity when content was generated forconsumption. For example, progress point information 106 has a metadatafield (not depicted in FIG. 1 ) called “Group Viewing Users” that maylist “Tom_Phone” in response to detecting that Tom's phone was withinproximity of media device 104. As depicted in FIG. 1 , metadata fieldsin progress point information 106 and progress point information 112 areunderstood to be only a portion of the possible metadata fields.

At timepoint C 114, media device 110 may generate an option, based onstored progress point information 112, to present the content that waspreviously presented on media device 104. As depicted in FIG. 1 , mediadevice 110 generates an option to display the movie that was previouslydisplayed on media device 104 starting from a time determined by“Playback Timestamp” field 112 e (e.g., a playback time of 45:00).

FIG. 2 shows an illustrative user interface 200 for presenting detecteddevices within proximity of media device 202, in accordance with someembodiments of the disclosure. User interface 200 allows a user tosearch for media devices within a proximity of media device 202, viewresults of the search, and select a media device to send a request forprogress point information to. Media device 202 is depicted in FIG. 2 asa smartphone. However, media device 202 is not limited to smartphonesand may be any electronic computing device capable of generating contentfor consumption.

Search for media devices within a proximity of media device 202 maybegin with a selection of search initialization button 204. In responseto the user selection to begin searching, media device 202 may use anyof the proximity-determining methods described in the description ofFIG. 1 to discover nearby media devices. The results of the search aredisplayed in results box 206. As depicted in FIG. 2 , the progress pointsynchronization system has discovered two media devices in proximity ofmedia device 202: a first media device with ID 208 “Sarah_Laptop” and asecond media device with ID 210 “Katie_Tablet.” Media devices displayedin results box 206 have visual attributes applied to user interface 200to indicate a property associated with the respective media device. Forexample, the second media device with ID 210 has a visual attribute 212of a star icon to indicate that media device 202, or the user usingmedia device 202, is pre-authorized to receive progress pointinformation associated with the second media device. This may mean that,upon the user selecting the request button 214, the media device 202receives progress point information from the second media device with ID210 without prompting its user, Katie, to authorize the request.

Media devices displayed in results box 206 may also appear in userinterface 200 with a message indicating that the respective mediadevices are currently generating content. For example, Sarah's laptopwith ID 208 idles on a screen saver while Katie's tablet is currentlygenerating “The Flash” for Katie and Tom. In this example, the systemmay generate a message or display a visual attribute (e.g., a “play”icon similar to the icon of playback option 216) to reflect that Katie'stablet is currently generating content. Similarly, the system maydisplay a different visual attribute to indicate media devices that arenot currently generating content (e.g., the same “play” icon with an “X”overlaid). If the user selects the media device with ID 208, the systemmay generate a message explaining that the media device selected is notcurrently generating content but prompts the user to select a contentitem which Sarah and he have previously viewed together in the past.This would be a valid progress point information request. When the userof media device 202 selects the second media device with ID 210, userinterface 200 may highlight the selection to show visual confirmation ofthe user's selection. Finally, the user may send the request forprogress point information to the selected media device using requestbutton 214.

User interface 200 may provide the user access to multiple functionsaside from searching for nearby media devices. A menu in user interface200 may provide playback option 216 to resume playing content, devicesearch option 218 to search for nearby media devices, viewing historysearch option 220 to browse stored progress point information forpreviously consumed content, favorites option 222 to bookmark a subsetof previously watched content for ease of access, and user profileoption 224 to access the account information associated with a logged-inuser.

Playback option 216 may provide the user with an interface to play backcontent. User interface 200 may redirect the user to a playbackinterface when the user selects content in the viewing history interfaceor the favorites interface shown upon selecting viewing history searchoption 220 and favorites option 222, respectively. At the playbackinterface, the system may present the user the option to confirmbeginning playback of content from a certain timestamp. The system mayprovide multiple timestamps to the user including the stored timestampin the progress point information, the beginning of the content,timestamps corresponding to highlights in the content (e.g., home runsin a baseball game), timestamps determined based upon the number ofusers requesting playback, or any suitable combination thereof.

For example, the system determines that content will be played back,through media device 202, to multiple users in a viewing group. Thedetermination may be done by detecting users within a proximity of mediadevice 202 using the proximity-determining methods described in thedescription of FIG. 1 . Upon detecting users within proximity of mediadevice 202, the system may retrieve progress point informationassociated with the media devices of each user in the viewing group.Media device 202 may prompt the user with the list of timestampscorresponding to the playback times at which each user last watched thiscontent. For example, playback interface shows a list of times 45:00,20:00, and 56:25 reflecting the playback times that the respective userslast watched “The Flash.” The user may have an option to select one ofthe times, or the system may determine one to start from. In oneinstance, the system determines to resume playback from the earliesttime in the list of timestamps.

For instances when multiple users in a viewing group are requestingplayback of a content item on device 202, the system may determine aplayback time based on highlights that are of interest to all users. Forexample, progress point information retrieved associated with each userincludes saved timestamps indicative of times within the content thatwere of interest to the user. The system may compare the savedtimestamps for the respective users to find a common timestamp or atimestamp that is within range of the saved timestamps corresponding toscenes of interest. If there are no common timestamps but the timedifference between the earliest and latest timestamps is less than athreshold time difference (e.g., within 5% of the overall play length ofthe content), the system may choose to resume playback from the earliesttimestamp. For example, users Katie and Tom have bookmarked timestamps30:03 and 30:15 in “The Flash.” Although the two timestamps are not thesame (12 seconds apart), the system may determine that the twotimestamps correspond to the same scene of interest because the timedifference is only 12 seconds, which is less than a predeterminedthreshold time difference of one minute.

Device search option 218 may provide the user with an interface tosearch for nearby media devices. One such interface is user interface200 as depicted in FIG. 2 . Results of the search may be listedaccording to device identifier, content currently being watched by themedia devices nearby, any suitable descriptor identifying progress pointinformation, or any combination thereof. For example, user interface 200lists detected media devices within a proximity according to contentsthat are being generated on the respective media devices (e.g., a listcomprising “The Flash,” “60 Minutes,” and “Peppa Pig” corresponding tothe content being watched on devices within a house). In some instances,a user may request progress point information from the most recent mediadevice used to consume content. For example, if Tom had requestedprogress point information from Katie's tablet, but Katie had continuedwatching with Tom more recently on her laptop, the system recommendsthat Tom request the more up-to-date progress point information. Furtherin this example, the system may determine that progress pointinformation is out-of-date and not store the progress point information.This determination may be done by analyzing whether a certain amount oftime has passed between when the content stopped being generated and arequest for associated progress point information was made. Returning tothe earlier example, if the system on Tom's smartphone had receivedKatie's outdated progress point information, the system may perform acheck of the time between when the progress point was created (e.g., ametadata field within the progress point information may provide atimestamp for the time of day of creation) and the time the request wasmade. When the system determines that the time difference is greaterthan a predefined period of time (e.g., 24 hours), the system may decidenot to store the progress point information to the smartphone's localmemory or to a remote server. The system may also generate anotification to the user with options to store or ignore the outdatedprogress point information.

Viewing history search option 220 may provide the user with an interfaceto search through viewing history of previously consumed content. Theviewing history search interface may further provide options to resumeplayback of previously consumed content. The options may include a listof content sources currently or shortly providing the content. Anexample of this interface is depicted in FIG. 3 .

Favorites option 222 may provide an interface to view a subset ofpreviously consumed content. For example, the subset corresponds tocontent that the user has selected as a favorite. The favoritesinterface may also allow the user to access bookmarked timestamps withina content corresponding to scenes in the content that the user may beinterested in returning to. In the playback interface, viewing historysearch interface, favorites interface, or any combination thereof, thesystem may present the user with an option to share progress pointinformation for at least one of the content items.

User profile option 224 may provide an interface for the user to accessaccount information or edit user preferences. The user profile interfacemay list content provider accounts that the user is subscribed to (e.g.,a Netflix subscription). The user profile interface may further listmedia devices that are pre-authorized. For example, media device 202 hasa contact list stored to local memory that the system accesses todetermine which requests for progress point information are authorizedwithout prompting the user to authorize the requests.

FIG. 3 shows an illustrative user interface 300 for searching previouslyconsumed content, in accordance with some embodiments of the disclosure.Media device 302 may present previously consumed content such as movies,sporting events, and television shows as depicted in FIG. 3 . However,content is not limited to audiovisual media, and includes audio-only orvideo-only content. For example, user interface 300 also presents a listof songs or podcasts that the user has previously listened to. Userinterface 300 shows that the user has selected the content thumbnail 304corresponding to a movie entitled “The Flash.” This selection may prompta detailed display of the progress point information associated with theselected content. For example, display 306 indicates that the userpreviously stopped watching “The Flash” at the 56:25-minute mark, whichmay be information obtained from a metadata field in stored progresspoint information.

The progress point synchronization system may determine contentproviders offering the content and generate options to resume playbackof the content. Media device 302 may be communicatively coupled withcontent provider servers from which the system may retrieve contentavailability and scheduling data to display. The system determines whichon-demand content providers offer a particular piece of content (e.g.,“The Flash”) and generate the options on a media device display to allowthe user to select an on-demand content provider. For example, display306 provides the user with options to select the on-demand contentproviders such as Netflix (option 308) and YouTube, that the system hasdetermined offer “The Flash.” The system may also determine, through thecommunications network between media device 302 and a content providerserver, if the account that the user has logged into media device 302with is associated with a paid subscription to the content provider. Toaccomplish this, the system may prompt the user to provide accountinformation, such as a user ID and password, or any suitable securitycredentials, to transmit to a content provider server. The contentprovider server may authorize the system to access its content providerdata (e.g., subscription status, subscription information). As a result,the system may determine which content providers the user has asubscription to and apply a visual attribute to distinguish a subscribedcontent provider from other content providers. For example, display 306includes a box 310 around option 308 because the system has determinedthat, of the content providers offering “The Flash,” the user issubscribed to Netflix. Access to content provider data is not limited tobeing from content providers that the user is subscribed to andauthorized to access. The system may transmit a request for contentprovider data without security credentials to receive data fornon-subscribers (e.g., the cost of subscription or a one-time fee for acontent item). For example, display 306 shows that YouTube offers “TheFlash” for a fee 312 of $5.99. Display 306 further provideslive-broadcasting content provider options such as HBO (option 314) andABC. If the user selects a live-broadcasting content provider, thesystem may alert the user at or before the time of the broadcast toassist the user to watch the content on time. The system mayautomatically select one of the content providers based on userpreferences. For example, if the user specifies a preference to consumecontent with existing content provider subscriptions, the systemautomatically begins playback from Netflix. In another example, if theuser specifies a preference to purchase content from the lowest-pricedcontent provider option, the system may automatically prompt the user toenter purchasing information for the cheapest option. For example, ifthe user does not have a Netflix subscription when presented with userinterface 300, the system prompts the user to purchase the content fromYouTube because a Netflix subscription is $12 per month while theone-time YouTube fee 312 for “The Flash” is only $5.99.

Users may access content for output from one or more of their devices.FIG. 4 shows generalized embodiments of an illustrative media devicesuch as media device 104 or media device 110. For example, media device104 is a smartphone device or a remote control. In another example,device 104 may be a user television equipment system. User televisionequipment system 104 may include a set-top box 416. Set-top box 416 maybe communicatively coupled to speaker 414, microphone 418, and display412. In some embodiments, display 412 may be a television display or acomputer display. In some embodiments, set top box 416 may becommunicatively coupled to user interface input 410. In someembodiments, user interface input 410 may be a remote control device.Set-top box 416 may include one or more circuit boards. In someembodiments, the circuit boards may include processing circuitry,control circuitry, and storage (e.g., RAM, ROM, Hard Disk, RemovableDisk, etc.). In some embodiments, circuit boards may include aninput/output path. More specific implementations of devices arediscussed below in connection with FIG. 5 . Each one of device 400 anduser equipment system 401 may receive content and data via input/output(hereinafter “I/O”) path 402. I/O path 402 may provide content (e.g.,broadcast programming, on-demand programming, Internet content, contentavailable over a local area network (LAN) or wide area network (WAN),and/or other content) and data to control circuitry 404, which includesprocessing circuitry 406 and storage 408. Control circuitry 404 may beused to send and receive commands, requests, and other suitable datausing I/O path 402. I/O path 402 may connect control circuitry 404 (andspecifically processing circuitry 406) to one or more communicationspaths (described below). I/O functions may be provided by one or more ofthese communications paths but are shown as a single path in FIG. 4 toavoid overcomplicating the drawing.

Control circuitry 404 may be based on any suitable processing circuitrysuch as processing circuitry 406. As referred to herein, processingcircuitry should be understood to mean circuitry based on one or moremicroprocessors, microcontrollers, digital signal processors,programmable logic devices, field-programmable gate arrays (FPGAs),application-specific integrated circuits (ASICs), etc., and may includea multi-core processor (e.g., dual-core, quad-core, hexa-core, or anysuitable number of cores) or supercomputer. In some embodiments,processing circuitry may be distributed across multiple separateprocessors or processing units, for example, multiple of the same typeof processing units (e.g., two Intel Core i7 processors) or multipledifferent processors (e.g., an Intel Core i5 processor and an Intel Corei7 processor). In some embodiments, control circuitry 404 executesinstructions for an application stored in memory (e.g., storage 408).Specifically, control circuitry 404 may be instructed by the applicationto perform the functions discussed above and below. For example, theapplication may provide instructions to control circuitry 404 to detectthat a user is within a predefined distance of media device 400. In someimplementations, any action performed by control circuitry 404 may bebased on instructions received from the application.

In client/server-based embodiments, control circuitry 404 may includecommunications circuitry suitable for communicating with a contentapplication server or other networks or servers. The instructions forcarrying out the above-mentioned functionality may be stored on thecontent application server. Communications circuitry may include a cablemodem, an integrated services digital network (ISDN) modem, a digitalsubscriber line (DSL) modem, a telephone modem, an Ethernet card, or awireless modem for communications with other equipment, or any othersuitable communications circuitry. Such communications may involve theInternet or any other suitable communications networks or paths (whichis described in more detail in connection with FIG. 5 ). In addition,communications circuitry may include circuitry that enables peer-to-peercommunication of devices, or communication of devices in locationsremote from each other (described in more detail below).

Memory may be an electronic storage device provided as storage 408 thatis part of control circuitry 404. As referred to herein, the phrase“electronic storage device” or “storage device” should be understood tomean any device for storing electronic data, computer software, orfirmware, such as random-access memory, read-only memory, hard drives,optical drives, digital video disc (DVD) recorders, compact disc (CD)recorders, BLU-RAY disc (BD) recorders, BLU-RAY 3D disc recorders,digital video recorders (DVR, sometimes called a personal videorecorder, or PVR), solid state devices, quantum storage devices, gamingconsoles, gaming media, or any other suitable fixed or removable storagedevices, and/or any combination of the same. Storage 408 may be used tostore various types of content described herein, including, for example,content associated with stored progress point information. Nonvolatilememory may also be used (e.g., to launch a boot-up routine and otherinstructions). Cloud-based storage, described in relation to FIG. 5 ,may be used to supplement storage 408 or instead of storage 408. In someembodiments, a database is accessible at the cloud-based storage, wherethe database stores progress point information, mapping information forreconciling playback timestamps between content from different contentproviders (e.g., mapping one scene, identified by a segment identifier,of a movie to the 45:00-minute mark on Netflix's version and to the35:00-minute mark on ABC's version), user preferences, bookmarkedtimestamps associated with content, or any suitable reference forcontrol circuitry to retrieve when presenting content based on progresspoint information, or any suitable combination thereof.

Control circuitry 404 may include video-generating circuitry and tuningcircuitry, such as one or more analog tuners, one or more MPEG-2decoders or other digital decoding circuitry, high-definition tuners, orany other suitable tuning or video circuits or combinations of suchcircuits. Encoding circuitry (e.g., for converting over-the-air, analog,or digital signals to MPEG signals for storage) may also be provided.Control circuitry 404 may also include scaler circuitry for upconvertingand downconverting content into the preferred output format of the userequipment 400. Circuitry 404 may also include digital-to-analogconverter circuitry and analog-to-digital converter circuitry forconverting between digital and analog signals. The tuning and encodingcircuitry may be used by the device to receive and to display, to play,or to record content. The tuning and encoding circuitry may also be usedto receive content data. The circuitry described herein, including, forexample, the tuning, video-generating, encoding, decoding, encrypting,decrypting, scaler, and analog/digital circuitry, may be implementedusing software running on one or more general purpose or specializedprocessors. Multiple tuners may be provided to handle simultaneoustuning functions (e.g., watch and record functions, picture-in-picture(PIP) functions, multiple-tuner recording, etc.). If storage 408 isprovided as a separate device from user equipment 400, the tuning andencoding circuitry (including multiple tuners) may be associated withstorage 408.

A user may send instructions to control circuitry 404 using user inputinterface 410. User input interface 410 may be any suitable userinterface, such as a remote control, mouse, trackball, keypad, keyboard,touchscreen, touchpad, stylus input, joystick, voice recognitioninterface, or other user input interfaces. Display 412 may be providedas a stand-alone device or integrated with other elements of each one ofdevice 400 and user equipment system 401. For example, display 412 maybe a touchscreen or touch-sensitive display. In such circumstances, userinput interface 410 may be integrated with or combined with display 412.Display 412 may be one or more of a monitor, a television, a liquidcrystal display (LCD) for a mobile device, amorphous silicon display,low temperature poly silicon display, electronic ink display,electrophoretic display, active matrix display, electro-wetting display,electrofluidic display, cathode ray tube display, light-emitting diodedisplay, electroluminescent display, plasma display panel,high-performance addressing display, thin-film transistor display,organic light-emitting diode display, surface-conductionelectron-emitter display (SED), laser television, carbon nanotubes,quantum dot display, interferometric modulator display, or any othersuitable equipment for displaying visual images. In some embodiments,display 412 may be HDTV-capable. In some embodiments, display 412 may bea 3D display, and the interactive application and any suitable contentmay be displayed in 3D. A video card or graphics card may generate theoutput to the display 412. The video card may offer various functionssuch as accelerated rendering of 3D scenes and 2D graphics,MPEG-2/MPEG-4 decoding, TV output, or the ability to connect multiplemonitors. The video card may be any processing circuitry described abovein relation to control circuitry 404. The video card may be integratedwith the control circuitry 404. Speakers 414 may be provided asintegrated with other elements of each one of device 400 and userequipment system 401 or may be stand-alone units. The audio component ofvideos and other content displayed on display 412 may be played throughspeakers 414. In some embodiments, the audio may be distributed to areceiver (not shown), which processes and outputs the audio via speakers414. Microphone 418 may be provided as integrated with other elements ofeach one of device 400 and user equipment system 401 or may be astand-alone unit. Microphone 418 may be any suitable device capable ofreceiving and converting sound into an electrical audio signal (e.g.,digital or analog). Microphone 418 may receive sounds made by users aswell as the audio component of content that is played through speakers414. Device 400 may include an embedded microphone 418 integrated withcontrol circuitry 404. Microphone 418 outputs the audio signal tocontrol circuitry 404. Control circuitry 404 may monitor the audiosignal to compare with determined audio strength of sounds made by usersto determine whether a user is within proximity of device 400.

The content application may be implemented using any suitablearchitecture. For example, it may be a stand-alone application whollyimplemented on each one of device 400 and user equipment system 401. Insuch an approach, instructions for the application are stored locally(e.g., in storage 408), and data for use by the application isdownloaded on a periodic basis (e.g., from an out-of-band feed, from anInternet resource, or using another suitable method). Control circuitry404 may retrieve instructions for the application from storage 408 andprocess the instructions to generate any of the displays discussedherein. Based on the processed instructions, control circuitry 404 maydetermine what action to perform when input is received from inputinterface 410.

In some embodiments, the application is a client/server-basedapplication. Data for use by a thick or thin client implemented on eachone of device 400 and user equipment system 401 is retrieved on demandby issuing requests to a server remote from each one of device 300 anduser equipment system 401. In one example of a client/server-basedcontent application, control circuitry 404 runs a web browser thatinterprets web pages provided by a remote server. For example, theremote server may store the instructions for the application in astorage device. The remote server may process the stored instructionsusing circuitry (e.g., control circuitry 404) and generate the displaysdiscussed above and below. The client device may receive the displaysgenerated by the remote server and may display the content of thedisplays locally on equipment device 400. This way, the processing ofthe instructions is performed remotely by the server while the resultingdisplays are provided locally on equipment device 400. Equipment device400 may receive audio signals from the user via microphone 418 andtransmit the audio signals to the remote server for processing.

In some embodiments, the content application is downloaded andinterpreted or otherwise run by an interpreter or virtual machine (runby control circuitry 404). In some embodiments, the content applicationmay be encoded in the ETV Binary Interchange Format (EBIF), received bycontrol circuitry 404 as part of a suitable feed, and interpreted by auser agent running on control circuitry 404. For example, the contentapplication may be an EBIF application. In some embodiments, the contentapplication may be defined by a series of JAVA-based files that arereceived and run by a local virtual machine or other suitable middlewareexecuted by control circuitry 404. In some of such embodiments (e.g.,those employing MPEG-2 or other digital media encoding schemes), thecontent application may be, for example, encoded and transmitted in anMPEG-2 object carousel with the MPEG audio and video packets of aprogram.

FIG. 5 is a block diagram of an illustrative progress pointsynchronization system 500, in accordance with some embodiments of thedisclosure. Components of system 500 are connected via communicationsnetwork 502. Communications network 502 may be one or more networksincluding the Internet, a mobile phone network, mobile voice or datanetwork (e.g., a 4G or LTE network), cable network, public switchedtelephone network, or other types of communications network orcombinations of communications networks. Communications network 502 iscommunicatively coupled to service provider 504 through communicationlink 516, and service provider 504 is communicatively coupled to adatabase 506 through communication link 518. Links 516 and 518 mayseparately or together include one or more communication paths, such as,a satellite path, a fiber-optic path, a cable path, a path that supportsInternet communications (e.g., IPTV), free-space connections (e.g., forbroadcast or other wireless signals), or any other suitable wired orwireless communication path or combination of such paths. In someinstances, service provider 504 may provide service data includingprogress point information, user account information, contentconsumption history, previously detected media devices, and userpreferences. Service data may be stored in database 506 for access byservice provider 504.

System 500 includes content provider 508 that is communicatively coupledto communications network 502 via communication link 520. Link 520includes any of the communication paths described above in connectionwith paths 516 and 518. There may be more than one of each of contentprovider 508, but only one of each is shown in FIG. 4 to avoidovercomplicating the drawing. Content provider 508 may include one ormore types of content distribution equipment including a televisiondistribution facility, cable system headend, satellite distributionfacility, programming sources (e.g., television broadcasters),intermediate distribution facilities and/or servers, Internet providers,on-demand content servers, and other content providers. Content provider508 may be the originator of content (e.g., a television broadcaster, aWebcast provider, etc.) or may not be the originator of content (e.g.,an on-demand content provider, an Internet provider of content ofbroadcast programs for downloading, etc.). Content provider 508 mayinclude cable sources, satellite providers, on-demand providers,Internet providers, over-the-top content providers, or other providersof content. Content provider 508 may also include a remote contentserver used to store different types of content (including video contentselected by a user), in a location remote from any of the devices.Systems and methods for remote storage of content and providing remotelystored content to user equipment are discussed in greater detail inconnection with Ellis et al., U.S. Pat. No. 7,761,892, issued Jul. 20,2010, which is hereby incorporated by reference herein in its entirety.

Content provider 508 may provide data related to the content. Contentdata may be provided to the devices using any suitable approach. In someembodiments, the content application may be a stand-alone interactivetelevision program guide that receives program guide data via a datafeed (e.g., a continuous feed or trickle feed). Program schedule dataand other content data may be provided to the user equipment on atelevision channel sideband, using an in-band digital signal, using anout-of-band digital signal, or by any other suitable data transmissiontechnique. Program schedule data and other content data may be providedto user equipment on multiple analog or digital television channels. Insome embodiments, content data may include viewer data. For example, theviewer data may include current and/or historical user activityinformation (e.g., what content the user typically watches, what timesof day the user watches content, whether the user interacts with asocial network, at what times the user interacts with a social networkto post information, what types of content the user typically watches(e.g., pay TV or free TV), mood, brain activity information, etc.). Thecontent data may also include subscription data. For example, thesubscription data may identify to which sources or services a given usersubscribes and/or to which sources or services the given user haspreviously subscribed but later terminated access. In some embodiments,content data from content provider 508 may be provided to user'sequipment using a client/server approach. For example, a user equipmentdevice may pull content data from a server, or a server may push contentdata to a user equipment device. In some embodiments, a contentapplication client residing on the user's equipment may initiatesessions with content provider 508 to obtain content data when needed,e.g., when the content data is out-of-date or when the device requeststhe data. Content data may be provided to the user equipment with anysuitable frequency (e.g., continuously, daily, at user-specifiedintervals, at system-specified intervals, in response to a request fromuser equipment, etc.)

Content and/or content data delivered to user computer device 512 andwireless user communications device 514 may be over-the-top (OTT)content. OTT content delivery allows Internet-enabled user devices,including any device described above, to receive content that istransferred over the Internet, including any content described above, inaddition to content received over cable or satellite connections. OTTcontent is delivered via an Internet connection provided by an Internetservice provider (ISP), but a third party distributes the content. TheISP may not be responsible for the viewing abilities, copyrights, orredistribution of the content, and may only transfer IP packets providedby the OTT content provider. Examples of OTT content providers includeYouTube, Netflix, and Hulu, which provide audio and video via IPpackets. YouTube is a trademark owned by Google Inc., Netflix is atrademark owned by Netflix Inc., and Hulu is a trademark owned by Hulu,LLC. OTT content providers may additionally or alternatively providecontent data described above.

Content output system 500 is intended to illustrate a number ofapproaches, or network configurations, by which devices and sources ofcontent and content data may communicate with each other for the purposeof accessing content and providing the ability to modify content inresponse to user engagement. The embodiments described herein may beapplied in any one or a subset of these approaches, or in a systememploying other approaches for delivering content. The following threeapproaches provide specific illustrations of the generalized example ofFIG. 5 .

In one approach, devices may communicate with each other within a homenetwork. Devices may communicate with each other directly viashort-range point-to-point communication schemes described above, viaindirect paths through a hub or other similar device provided on a homenetwork, or via communications network 502. Each of the multipleindividuals in a single home may operate different devices on the homenetwork. As a result, it may be desirable for various contentapplication information or settings to be communicated between thedifferent devices. For example, it may be desirable for users tomaintain consistent application settings on different devices within ahome network, as described in greater detail in Ellis et al., U.S.Patent Publication No. 2005/0251827, filed Jul. 11, 2005. Differenttypes of devices in a home network may also communicate with each otherto transmit content. For example, a user may transmit content from usercomputer equipment to a portable video player or portable music player.As another example, a portable media device may transmit progress pointinformation to user television equipment to begin playback on a largerscreen for group viewing.

In a second approach, users of devices inside and outside a home usetheir application to communicate directly with content source 416 toaccess content. Specifically, users with television equipment andcomputer equipment, both connected to communications network 502although not depicted this way in the drawing, within a home may accessthe application to navigate among and locate desirable content. Usersmay also access the application outside of the home using user portabledevices such as computer device 512 or wireless user communicationsdevice 514 to navigate among and locate desirable content.

In a third approach, devices may operate in a cloud computingenvironment to access cloud services. In a cloud computing environment,various types of computing services for content sharing, storage ordistribution (e.g., video sharing sites or social networking sites) areprovided by a collection of network-accessible computing and storageresources, referred to as “the cloud.” For example, the cloud includes acollection of server computing devices, which may be located centrallyor at distributed locations, that provide cloud-based services tovarious types of users and devices connected via a network such as theInternet via communications network 502. These cloud resources mayinclude one or more content providers 508. In addition, or in thealternative, the remote computing sites may include other devices, suchas computer device 512 or wireless user communications device 514. Forexample, the other devices may provide access to a stored copy of avideo or a streamed video. In such embodiments, devices may operate in apeer-to-peer manner without communicating with a central server.

The cloud provides access to services, such as content storage, contentsharing, or social networking services, among other examples, as well asaccess to any content described above, for devices. Services may beprovided in the cloud through cloud computing service providers, orthrough other providers of online services. For example, the cloud-basedservices include a content storage service, a content sharing site, asocial networking site, or other services via which user-sourced contentis distributed for viewing by others on connected devices. Thesecloud-based services may allow a device to store content to the cloudand to receive content from the cloud rather than storing contentlocally and accessing locally stored content.

Cloud resources may be accessed by a device using, for example, a webbrowser, an application, a desktop application, a mobile application,and/or any combination of access applications of the same. The devicemay be a cloud client that relies on cloud computing for applicationdelivery, or the device may have some functionality without access tocloud resources. For example, some applications running on the devicemay be cloud applications, i.e., applications delivered as a serviceover the Internet, while other applications may be stored and run on thedevice. In some embodiments, a user device may receive content frommultiple cloud resources simultaneously. For example, a user devicestreams audio from one cloud resource while downloading audio visualcontent from a second cloud resource. Or a user device downloads contentfrom multiple cloud resources for more efficient downloading. In someembodiments, devices use cloud resources for processing operations suchas the processing operations performed by processing circuitry describedin relation to FIG. 4 .

Each one of device 400 and user equipment system 401 of FIG. 4 may beimplemented in system 500 as user computer device 512, wireless usercommunications device 514, or any other type of user equipment suitablefor accessing content. Devices, on which an application may beimplemented, may function as stand-alone devices or may be part of anetwork of devices. In system 500, there are typically more than one ofeach type of device but only one of each is shown in FIG. 5 to avoidovercomplicating the drawing. In addition, each user may utilize morethan one type of device and also more than one of each type of device.Devices 512 and 514 may be communicatively coupled to communicationsnetwork 502 directly. However, as depicted in FIG. 5 , devices 512 and514 are communicatively coupled indirectly through intermediarycommunication point 510. Intermediary communication point 510 may be awireless access point, a cable modem, WiFi router, cellular tower, anysuitable communications device capable of receiving and transmittingtelecommunications signals, or a combination thereof. Althoughcommunications between content provider 508 and devices 512 and 514 areshown as through communications network 502, in some embodiments,content provider 508 may communicate directly with devices 512 and 514via communication paths (not shown) such as those described above inconnection with paths 516 and 518.

In some embodiments, a device (e.g., user computer device 512 orwireless user communications device 514) may be referred to as a “seconddevice.” For example, a second device may provide an interface foradjusting settings and display preferences of the first device. In someembodiments, the second device is configured for interacting with othersecond devices or for interacting with a social network. The seconddevice may be located in the same room as the first device or adifferent room from the first device but in the same house or building.The progress point synchronization system active on the first device maydetermine the proximity of the user of the second device based on apredefined distance that the first device is from the second device.

Although communications paths are not drawn between devices, thesedevices may communicate directly with each other via communicationpaths, such as those described above in connection with paths 516 and518, as well as other short-range point-to-point communication paths,such as USB cables, IEEE 1394 cables, wireless paths (e.g., Bluetooth,infrared, IEEE 402-11x, etc.), or other short-range communication viawired or wireless paths. BLUETOOTH is a certification mark owned byBluetooth SIG, INC.

Any one or more of device 400 and user equipment system 401 of FIG. 4and user computer device 512 and wireless user communications device 514of FIG. 5 may be used to store, share, or request progress pointinformation to resume playback of content based on the progress pointinformation. For example, the devices of the present disclosure requestprogress point information from a second device in response to detectingthat its user is within a proximity of the second device. Furtherdetails of the present disclosure are discussed below in connection withthe flowcharts of FIGS. 6-8 .

FIG. 6 depicts an illustrative flowchart of a process 600 forsynchronizing progress point information, in accordance with someembodiments of the disclosure. It should be noted that the steps ofprocess 600 may be performed by control circuitry 404 of FIG. 4 , or anyof the system components shown in FIGS. 1-5 . Control circuitry 404 maybe a part of media devices 104, 110, 202, or 302, part of a remoteserver separated from the user equipment by way of a communicationsnetwork (e.g., communications network 502 of FIG. 5 ), or distributedover a combination of both.

At step 602, the system determines if a first user is within apredefined distance of a media device. In process 600, the system usesdistance as a measure of proximity, but any of the proximity detectionmethods described in the description of FIG. 1 may be implemented. Thesystem may determine that there is a first user, Katie, near a mediadevice, where Katie is not the same person as the user, Tom, of themedia device. Rather, Katie may have her own media device, a tablet,that may be used when detecting that she is within a predefined distanceof Tom's media device, a smartphone. For example, by using the GPSsystems enabled on both the tablet and the smartphone, the systemdetermines that Katie is near Tom's smartphone, which may involveassuming that Katie is at the same location as her tablet. If the systemdetects that Katie is within a predetermined proximity of Tom'ssmartphone, it may proceed to step 604. However, if the systemdetermines that there is no user within proximity of Tom's smartphone,the system will not depart from current operations to receive or send arequest for progress point information. The system may wait until itreceives a user selection responsive to a button such as button 204 tobegin searching for near users or media devices.

At step 604, the system transmits a request for progress pointinformation to the media device. Tom's smartphone may transmit a requestto Katie's tablet (e.g., through communication links such as links 524and 526) for progress point information stored on Katie's tablet or aremote server. The request may comprise data such as an identifierassociated with Tom's smartphone. The system may use the identifier torecognize Tom's smartphone as a media device belonging to a list ofpre-authorized or trusted media devices. Authorization will be describedin more detail in FIG. 7 .

At step 606, the system receives progress point information identifyingcontent output by the media device. Progress point information mayfurther identify a timestamp indicative of playback progress of thecontent being output. Exemplary metadata fields of progress pointinformation are shown in progress point information 106 and 112 of FIG.1 . For example, Tom's smartphone may receive progress point informationsimilar to progress point information 106 from Katie's tablet. Althoughthe system, at step 606, receives progress point information for contentcurrently being output, the system may also receive progress pointinformation for content that has been previously output. For example,Tom requests, at step 604, progress point information for a piece ofcontent that was previously generated. The system's user interface atTom's phone may prompt him to specify which content he wishes to requestprogress point information regarding, to which Tom may enter or selectfrom a display of previously consumed content (e.g., at user interface300).

The system may perform steps 608 and 610 in serial or in parallel. Atstep 608, the system identifies content providers that are offering thecontent. The system, based on progress point information, accesses aunique content identifier to query content providers for thecorresponding content. For example, after receiving progress pointinformation from Katie's tablet or accessing stored progress pointinformation, the system on Tom's smartphone uses a content identifierfrom a metadata field within the progress point information to querycontent providers. If the content in question is the movie “The Flash,”the system may use a unique content identifier such as an identifierfrom the Entertainment Identifier Registry Association (EIDR) that hasbeen stored as a metadata field in the progress point informationreceived from Katie's tablet. The system may use communication linksfrom the media device to a content provider (e.g., links 526, 522, and520 of FIG. 5 ) to query content providers with the unique identifier.The content provider may confirm it is offering the content bytransmitting, to the media device, information such as the contentitself, the price of the content, or similar content (e.g., if Netflixdoes not have “The Flash,” but wants to offer a similar movie such as“Green Lantern”). This information obtained from the content providerwill be used in step 612. Prior to step 612, the system will completestep 610 by storing the progress point information associated with aprofile that is, in turn, associated with the first user. For example,the system on Tom's smartphone stores the progress point informationreceived from Katie's tablet either locally within the memory of thesmartphone or to a remote server or database (e.g., database 506 of FIG.5 ) that is maintained by the service provider (e.g., service provider504 of FIG. 5 ). In this case, Katie's progress point information isassociated with her user account or profile maintained by the serviceprovider that manages the system. When Tom receives her progress pointinformation, that association may be indicated as a field in the storedversion on his device (e.g., “Source Device ID” field 112 f of FIG. 1 ).

At step 612, the system may generate options to display the contentbased on the stored progress point information and identified contentproviders offering the content. For example, Tom's smartphone obtainsinformation such as the content and the playback timestamp from theprogress point information to display that “The Flash” can be continuedfrom a playback timestamp of the 56:25-minute mark. This is shown indisplay 306 of FIG. 3 . The display 306 also exemplifies the system'sgeneration of options corresponding to content providers offering thecontent identified in step 608. For example, “The Flash” is availablefrom both OTT sources such as Netflix and YouTube, and live-broadcastingsources, such as HBO and ABC.

Steps 614 and 616 are associated with an optional feature to augment theuser interface with a visual attribute to distinguish content providersthat the user is subscribed to. The system, at step 614, begins theprocess to apply a visual attribute by identifying a content providerthat the user is subscribed to of the content providers offering thecontent. To make this determination, the system may have previouslyprompted the user to provide security credentials or login credentialsto log in to a content provider account through the service provider orto gain authorization to access the content provider's content or useraccount information (e.g., a user's Netflix account information such assubscription status). Communication between the media device and thecontent provider to make this determination may be done through acommunication link such as links 522 and 520 in FIG. 5 . If the user ofthe media does not have a subscription to any of the content providersoffering the content, the system will not apply a visual attribute whendisplaying the options to play back the content. For example, if Tom isnot subscribed to any OTT content providers, the user interface such asuser interface 300 would not show a visual attribute distinguishing anyof the content providers from the others. However, if the user does havea subscription to any of the content providers offering the content, thesystem will proceed to step 616 to apply a visual attributedistinguishing a content provider to which the user is subscribed.Exemplary visual attributes include a box surrounding an option, aunique color, an icon, any suitable visual indication thatdifferentiates the appearance of the option from the way an option isroutinely displayed, or a combination thereof. For example, if Tom issubscribed to Netflix, an OTT provider offering “The Flash,” the systemapplies a box (e.g., box 310) around the displayed Netflix option in theuser interface.

FIG. 7 depicts an illustrative flowchart of a process 700 for sharingprogress point information, in accordance with some embodiments of thedisclosure. While process 600 comprises a method for requesting progresspoint information, process 700 comprises a method for sending or sharingprogress point information. Drawing an analogy to FIG. 1 , process 700may be seen as actions taken by the system on media device 104 inresponse to media device 110's request for progress point information.It should be noted that the steps of process 700 may be performed bycontrol circuitry 404 of FIG. 4 , or any of the system components shownin FIGS. 1-5 .

At step 702, the system receives, from a media device, a request tostore progress point information. The request may be received through acommunication link such as those described in the description of FIG. 5. The request for progress point information may include metadataidentifying the source of the request (e.g., device ID for the mediadevice) or the content for which progress point information is beingrequested (e.g., a content title or identifier). This metadata may beused in step 704, which may be an optional step allowing the system toautomatically send progress point information without prompting the userto authorize. For example, if Tom is pre-authorized by Katie to accessher progress point information, Katie's tablet will not prompt herthrough a user interface to authorize Tom's requests for progress pointinformation. In another example, the request may include an indicationof the content for which progress point information is being generatedsuch as “‘Tom_Phone’ is requesting progress point information for ‘TopChef’ Season 12. Episode 6.”

At step 704, the system determines whether the user making the requestis pre-authorized to receive progress point information. The system mayuse a list of pre-authorized media devices, listed by a uniqueidentifier such as the Device ID, full name, a username, email address,or phone number as described in the description of FIG. 1 , to confirmthat the media device, and by association, the user of the media device,making the request are authorized. If the system determines that theuser or user's device is pre-authorized, the system will proceed to step708. Otherwise, the system proceeds to step 706. For example, theprogress point synchronization system on Katie's tablet contains recordsthat Tom or Tom's smartphone is a pre-authorized user or device,respectively. This record may be a contact list that is stored in localmemory of Katie's tablet or a list that is entered by Katie and storedin the database of the service provider (e.g., database 506 of serviceprovider 504 of FIG. 5 ).

At step 706, the system generates a prompt to authorize the userrequesting progress point information. This may be a pop-up on any ofthe user interfaces as described in FIGS. 2-3 . The prompt may begenerated based on metadata information that was transmitted along withthe request for progress point information. In one instance, the promptto authorize a user may include the name of the device or user IDassociated with the request. For example, the system generates a promptfor Katie's response that reads “Request for progress point receivedfrom ‘Tom_Phone’—Accept? Yes or No” that includes the media device ID.If the user chooses not to authorize the request for progress point, thesystem may take no further action. Alternatively, in response to theuser's choice to not authorize, the system may transmit the user'schoice to the requesting user's device. The requesting user's device maychange its user interface to show a message that their request wasdenied. For example, if Katie chose not to authorize Tom's request forher progress point information, the system sends a reflection of thatchoice to Tom's smartphone. The system on Tom's smartphone may choose togenerate a pop-up disclosing that Katie refused to authorize hisrequest. However, if the user chooses to authorize the requesting userand the corresponding request, the system may proceed to step 708.

At step 708, the system may determine if it is currently generatingcontent for consumption. For example, media device 104 may determinethat it is currently generating a movie on its display (e.g., generatinga movie for playback on the playback interface 216 of FIG. 2 ).Depending on whether the media device is generating content for outputcurrently, the system may infer the progress point information that auser is requesting. For example, if Katie is currently watching “TheFlash” and the system has detected Tom is within a proximity, the systeminfers that Tom's request for progress point information is associatedwith their group viewing of “The Flash” and proceed to step 710.However, the system may be unable to make such an inference if nocontent is currently being generated for consumption. In suchcircumstances, the system may ask the user to select a specific contentitem for which progress point information should be shared. For example,if Tom requests progress point information from Katie after she hasstopped playback of “The Flash,” the system on Katie's tablet asks herto confirm, from a list of previously consumed content with Tom, whichcontent's progress point information to share. This process is describedin more detail in steps 712, 714, and 716.

At step 710, the system transmits progress point information of contentthat is currently generated to the device that has made the request. Forexample, the system on Katie's tablet transmits the requested progresspoint information (e.g., progress point information 106) for thecurrently watched movie, “The Flash,” to Tom's smartphone.

Steps 712, 714, and 716 describe a method for transmitting progresspoint information when the system is not currently generating contentfor consumption. At step 712, the system compiles progress pointinformation of previously consumed content. The system may use themetadata received in the request to determine a specific subset ofprogress point information of previously watched content. For example,the request includes an identifier of the requesting device, and thesystem may compile only previously consumed content that was consumedwith the requesting device within proximity. For example, Katie's tabletshows her an option to select progress point information for “The Flash”and “Top Chef” because she and Tom have watched those two content itemstogether. At step 714, the system receives a user selection to shareselected content progress point information. Further in the earlierexample, Katie may select to share progress point information for “TheFlash.” At step 716, the system transmits the selected content progresspoint information to the requesting media device. Further in the earlierexample, the system may transmit, using communications circuitry inKatie's tablet, the progress point information for “The Flash” to Tom'ssmartphone (e.g., through intermediate communication points such as awireless access point or through a service provider's server or directlyto the device through short-range point-to-point communication asdescribed in the description of FIG. 5 ).

Processes 600 and 700 for requesting and sharing progress pointinformation may be achieved by the system without user involvement,i.e., the devices may communicate device-to-device to request andtransmit progress point information automatically and periodically. Forexample, the system is configured such that, at a certain frequency(e.g., every 5 minutes), it may detect a user or user's media devicewithin proximity to transmit a request for progress point information.In order to detect proximity, the system may utilize GPS and timesassociated with GPS data. Proximity may be determined in real time orafter the fact. In some embodiments, proximity is predicted based ondata that has organized two users to consume content together (e.g., acalendar), but should be verified by any of the proximity detectionmethods described in the description of FIG. 1 . In an example ofafter-the-fact proximity determination, the user does not haveconnection to the service provider and has to synchronize progress pointinformation when the connection (e.g., link 516) is back online. Thedevices may share progress point information device-to-device using aclose-range point-to-point communication, but the progress pointinformation may not be accessible until the system approves that thesources of the progress point information were within a predefineddistance (e.g., based on stored GPS coordinates and respectivetimestamps). The system may provide, through a user interface like userinterfaces 200 and 300, a button for the user to synchronize progresspoints from a period of time (e.g., from the last three hours)corresponding to when the user was not connected to the serviceprovider. If a pre-authorization list (e.g., list of pre-authorizedmedia devices as discussed above) has been established, the media devicereceiving the request may transmit progress point information withoutinterrupting the user's current operation of the media device.

FIG. 8 depicts an illustrative flowchart of a process 800 forreconciling playback progress between content sources, in accordancewith some embodiments of the disclosure. In circumstances where aplayback timestamp of a content item from a first content provider doesnot play back the same segment when resumed with a different version ofthe content provided by a second content provider. For example, acontent provider edits out certain scenes in a movie such that aplayback at the 30:00-minute mark in the full movie offered by Netflixmay not result in the same scene as a playback at the 30:00-minute markon the edited movie offered by ABC. Process 800 is an exemplary methodof reconciling playback progress between content sources for a situationsuch as the one described above. It should be noted that the steps ofprocess 800 can be performed by control circuitry 404 of FIG. 4 , or anyof the system components shown in FIGS. 1-5 .

At step 802, the system retrieves progress point information identifyinga first content item, a first content provider that provided the firstcontent item to a user, and a timestamp indicating the user's playbackprogress of the first content item. For example, the system retrievesprogress point information as described in the description of FIG. 1that identifies a movie such as “The Flash,” a first content providersuch as HBO, and a timestamp such as the 45:00-minute mark.

At step 804, the system determines a first segment from the firstcontent item based on the timestamp. A content item may be composed ofsegments (e.g., scenes in a movie) which may have their own identifiers(e.g., each scene in a movie has a hash value identifying it among otherscenes in the movie). A playback timestamp saved in progress pointinformation may also correspond to a scene and respective hash value,which may be saved as additional metadata fields in the progress pointinformation. For example, the 45:00-minute mark of the movie “The Flash”corresponds to a scene identified by a unique hash ID.

At step 806, the system determines a fingerprint for the first contentitem. Although content items can be identified by a title, seriesnumber, episode number, or a combination thereof, a fingerprint isdetermined to uniquely identify the content item among existing contentitems accessible through Internet databases. For example, EIDR offers auniversal unique identifier for movie and television assets that may beused as a fingerprint for content items that are related to movies andtelevision. Further in the previous example, the movie “The Flash” mayhave a fingerprint that is determined from the EIDR database.

At step 810, the system receives a user selection to play back a secondcontent item from a second content provider. When resuming playback, theuser may not be able to access the first content provider (e.g., theuser has terminated a previously active subscription to the firstcontent provider), and instead, may choose a second content providerthat may have its own version of the first content item and hence isdenoted as “the second content item.” Alternatively, the user may needto select a different version of the first content from a second contentprovider to fulfill certain viewing requirements. For example, the useris with a child who should see the content from a content provider thatedits the content according to parental advisory guidelines (e.g., thesecond content item is a version of the first content item that has lessviolence or inappropriate language). The system may determine, inadvance, content providers that are offering the content for playback,or the user may specify a desired provider that the system will query todetermine if the desired provider is offering the content. As depictedin process 800, the system does not perform a determination in advanceif content providers offer the content, which necessitates step 812.

At step 812, the system determines if the second content item is offeredby the second content provider. A service provider may save the contentitems which a user has previously consumed or for which the user hasregistered to resume later playback, and the system may becommunicatively coupled with the service provider to access savedcontent items when querying content providers for content. Furthermore,the service provider may maintain an up-to-date mapping of a contentitem to the content providers offering it. If the second contentprovider does not offer the second content, the system may prompt theuser to select another content provider and return to step 810. Forexample, if the user has selected to watch “The Flash” from Hulu, andHulu does not offer that movie, the system displays an error message,prompt the user to select another content provider, suggest a list ofcontent providers that do offer the content, or any combination thereof.Alternatively, if the second content provider does not offer a versionof the content associated with the stored progress point information,the system may determine which content provider does offer the sameversion of the content. This may be done by comparing identifiers ofsegments in content (e.g., matching segments by identifiers as discussedsubsequently) to determine if two versions of content are the same. Theterm “same version” may be understood to mean having the same productionedits (e.g., audio, video frames, resolution quality, etc.). If thesecond content is offered by the second content provider, the system mayproceed to step 814.

At step 814, the system may determine if there is a segment from thesecond content item that matches the segment from the first contentitem. To provide the appropriate timestamp to resume content, the systemmay determine that the same segment exists in both the first and secondmedia contents. For example, Netflix and HBO may have variations of themovie, “The Flash,” but have a common scene, corresponding to atimestamp in stored progress point information, where the protagonist isfighting a nemesis. The progress point information may provide anindication that the playback timestamp of the 45:00-minute markcorresponds to a scene with an exemplary playback identifier of“218nuw_19_120,” where “218nuw” may be an identifier for the movie, “19”may be an identifier for the 19th scene, and “120” may correspond to the45:00-minute mark (e.g., 120 seconds into the 19th scene is 45 minutesfrom the beginning of the movie). The playback identifier“218nuw_19_120” may be stored as a metadata field in the progress pointinformation. The system may receive playback identifier information fromcontent providers that access a database of metadata for each content,including a list of playback identifiers. If this scene identifier isassociated with both the first and second content items, the system mayproceed to step 818. However, if the playback identifier “218nuw_19_120”associated with the first content item is not in the second contentitem's list of playback identifiers (e.g., the second content provideredited out the scene in their version of the movie to allow more timefor commercial breaks), the system is unable to use playback identifier“218nuw_19_120” to resume playback with the second content item at theappropriate time. As a result of its inability to match a segment fromthe second content item to a segment from a first content item, thesystem may proceed to step 816 to find a scene that is appropriate toresume playback from.

The system may, at step 814, also identify a segment from the secondcontent item that matches the segment from the first content item bycomparing frames from both content items. The term “frames” will beunderstood to refer to consecutive components of sound or images such asaudio frames, visual frames, or a combination thereof that compose mediacontent such as a recorded song or video. The system may extract framesfrom a segment from the first content item that correspond to a portionof the first content item identified by progress point information. Asecond content item may be separated into segments, where each segmentcomprises frames. To find the matching segment between the first contentitem and the second content item, the system compares the extractedframes from the first content item to frames of each of the segmentsfrom the second content item.

At step 816, the system identifies a segment from the first content itemthat corresponds to a segment from the second content item. Incircumstances where the timestamp associated with a segment from a firstcontent item does not correspond to the timestamp of a matching segmentin a second content item (e.g., the scene at the 45:00-minute mark inone version of a movie is not the same scene as the scene at the45:00-minute mark in a second version of the movie), the system mayidentify a segment that occurs prior to the segment from the firstcontent. For example, if a first content item is associated with aplayback identifier of “218nuw_19_120” as previously described, thesystem decides to resume playback from a scene in the second contentitem corresponding to playback identifier “218nuw_18_000” (e.g., thesecond content item does not have scene 19 but the latest scene of theearliest scenes available from the second content provider is scene 18).A segment prior to the desired playback segment is one example of asegment corresponding to another segment. The system may also findcorresponding segments through shared attributes such as a common actor,genre, storyline, any suitable descriptor of a content item segment, ora combination thereof.

At step 818, the system generates, for display, the second content itemstarting at a point in the second segment. The point may be the exactplayback timestamp from the retrieved progress point information. Thesystem may determine the point in the second segment based on userpreferences (e.g., a dislike for violent content, a preferred actor, adesire to view highlights). For example, the system generates “TheFlash” on YouTube at exactly the 45:00-minute mark for Tom to view afterdetermining that the HBO version that Katie watched had a matchingsegment at that timestamp. Alternatively, the system may generate “TheFlash” for viewing at the 30:00-minute mark because the YouTube versioncut out the scene at the 45:00-minute mark and HBO did not.

It should be noted that processes 600-800 or any step thereof could beperformed on, or provided by, any of the devices shown in FIGS. 1-5 .For example, the processes are executed by control circuitry 404 (FIG. 4) as instructed by an application implemented on media device 512 and/orserver 504. In addition, one or more steps of a process may beincorporated into or combined with one or more steps of any otherprocess or embodiment (e.g., steps from process 600 may be combined withsteps from process 700). In addition, the steps and descriptionsdescribed in relation to FIGS. 6-8 may be done in alternative orders orin parallel to further the purposes of this disclosure. For example,each of these steps is performed in any order or in parallel orsubstantially simultaneously to reduce lag or increase the speed of thesystem or method.

The processes discussed above are intended to be illustrative and notlimiting. One skilled in the art would appreciate that the steps of theprocesses discussed herein may be omitted, modified, combined, and/orrearranged, and any additional steps may be performed without departingfrom the scope of the invention. More generally, the above disclosure ismeant to be exemplary and not limiting. Only the claims that follow aremeant to set bounds as to what the present invention includes. Inaddition, the systems and methods described herein may be performed inreal time. It should also be noted, the systems and/or methods describedabove may be applied to, or used in accordance with, other systemsand/or methods.

What is claimed is:
 1. A method comprising: receiving, from each of aplurality of media devices, a request for playback of content at a firstmedia device, wherein the first media device is different from each ofthe plurality of media devices; detecting that each of the plurality ofmedia devices is within a predefined proximity of the first mediadevice; retrieving progress point information for each of the pluralityof media devices, wherein the progress point information for each of theplurality of media devices identifies a plurality of timestamps each ofwhich corresponds to a playback time of the content corresponding to arespective media device of the plurality of media devices; and inresponse to determining that a time difference between an earliesttimestamp and a latest timestamp of the content from the plurality oftimestamps of the plurality of media devices is less than a thresholdtime difference, resuming the content at the first media device at theearliest timestamp.
 2. The method of claim 1, wherein detecting thateach of the plurality of media devices is within the predefinedproximity of the first media device comprises: retrieving a firstlocation data associated with the first media device, wherein the firstlocation data includes geographical information and time information;retrieving a location data associated with each of the plurality ofmedia devices, wherein the location data includes geographicalinformation and time information; and correlating the first locationdata with respective location data.
 3. The method of claim 1 furthercomprising: periodically broadcasting the request from each of theplurality of media devices.
 4. The method of claim 1 further comprising:storing the progress point information for each of the plurality ofmedia devices.
 5. The method of claim 4, further comprising: determiningwhether the progress point information is outdated based on a time thatthe progress point information was generated; and in response todetermining that the progress point information is outdated, excludingthe progress point information from being stored.
 6. The method of claim1 wherein the progress point information comprises a content providerassociated with the content.
 7. A system comprising: an input/output(I/O) circuitry configured to: receive, from each of a plurality ofmedia devices, a request for playback of content at a first mediadevice, wherein the first media device is different from each of theplurality of media devices; and a control circuitry communicably coupledto the I/O circuitry and configured to: detect that each of theplurality of media devices is within a predefined proximity of the firstmedia device; retrieve progress point information for each of theplurality of media devices, wherein the progress point information foreach of the plurality of media devices identifies a plurality oftimestamps each of which corresponds to a playback time of the contentcorresponding to a respective media device of the plurality of mediadevices; and in response to determining that a time difference betweenan earliest timestamp and a latest timestamp of the plurality oftimestamps of the plurality of media devices is less than a thresholdtime difference, resume the content at the first media device at theearliest timestamp.
 8. The system of claim 7, wherein to detect thateach of the plurality of media devices is within the predefinedproximity of the first media device, the control circuitry is configuredto: retrieve a first location data associated with the first mediadevice, wherein the first location data includes geographicalinformation and time information; retrieve a location data associatedwith each of the plurality of media devices, wherein the location dataincludes geographical information and time information; and correlatethe first location data with respective location data.
 9. The system ofclaim 7, wherein the control circuitry is further configured to:periodically broadcast the request from each of the plurality of mediadevices.
 10. The system of claim 7, wherein the control circuitry isfurther configured to: store the progress point information for each ofthe plurality of media devices.
 11. The system of claim 10, wherein thecontrol circuitry is further configured to: determine whether theprogress point information is outdated based on a time that the progresspoint information was generated; and in response to determining that theprogress point information is outdated, exclude the progress pointinformation from being stored.
 12. The system of claim 7, wherein theprogress point information comprises a content provider associated withthe content.